package com.hlj.ncp.warehouse.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hlj.ncp.warehouse.entity.ColdStorageMonitor;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 冷库湿温度监控 服务层
 */
public interface IColdStorageMonitorService extends IService<ColdStorageMonitor> {
    
    /**
     * 查询冷库湿温度监控列表
     * 
     * @param coldStorageMonitor 冷库湿温度监控信息
     * @return 冷库湿温度监控集合
     */
    List<ColdStorageMonitor> selectColdStorageMonitorList(ColdStorageMonitor coldStorageMonitor);
    
    /**
     * 查询冷库湿温度监控详细信息
     * 
     * @param monitorId 监控ID
     * @return 冷库湿温度监控信息
     */
    ColdStorageMonitor selectColdStorageMonitorById(Long monitorId);
    
    /**
     * 新增冷库湿温度监控
     * 
     * @param coldStorageMonitor 冷库湿温度监控信息
     * @return 结果
     */
    int insertColdStorageMonitor(ColdStorageMonitor coldStorageMonitor);
    
    /**
     * 修改冷库湿温度监控
     * 
     * @param coldStorageMonitor 冷库湿温度监控信息
     * @return 结果
     */
    int updateColdStorageMonitor(ColdStorageMonitor coldStorageMonitor);
    
    /**
     * 批量删除冷库湿温度监控
     * 
     * @param monitorIds 需要删除的监控ID
     * @return 结果
     */
    int deleteColdStorageMonitorByIds(Long[] monitorIds);
    
    /**
     * 删除冷库湿温度监控信息
     * 
     * @param monitorId 监控ID
     * @return 结果
     */
    int deleteColdStorageMonitorById(Long monitorId);
    
    /**
     * 处理冷库湿温度告警
     * 
     * @param coldStorageMonitor 冷库湿温度监控信息
     * @return 结果
     */
    int processColdStorageMonitorAlarm(ColdStorageMonitor coldStorageMonitor);
    
    /**
     * 查询最新的监控数据
     * 
     * @param warehouseId 仓库ID
     * @return 监控数据列表
     */
    List<ColdStorageMonitor> selectLatestMonitorData(Long warehouseId);
    
    /**
     * 统计各状态的监控数据
     * 
     * @param warehouseId 仓库ID
     * @return 统计结果
     */
    List<Map<String, Object>> selectMonitorStats(Long warehouseId);
    
    /**
     * 查询指定时间范围内的监控数据
     * 
     * @param warehouseId 仓库ID
     * @param storageArea 冷库区域
     * @param deviceId 设备ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 监控数据列表
     */
    List<ColdStorageMonitor> selectHistoryData(Long warehouseId, String storageArea, String deviceId, 
                                               LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 查询温湿度趋势数据（按小时聚合）
     * 
     * @param warehouseId 仓库ID
     * @param storageArea 冷库区域
     * @param deviceId 设备ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 趋势数据列表
     */
    List<Map<String, Object>> selectTrendDataByHour(Long warehouseId, String storageArea, String deviceId, 
                                                   LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 查询温湿度趋势数据（按天聚合）
     * 
     * @param warehouseId 仓库ID
     * @param storageArea 冷库区域
     * @param deviceId 设备ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 趋势数据列表
     */
    List<Map<String, Object>> selectTrendDataByDay(Long warehouseId, String storageArea, String deviceId, 
                                                  LocalDateTime startTime, LocalDateTime endTime);
} 